package mx.com.switz.dao.Impl;

import java.util.List;
import javax.sql.DataSource;
import mx.com.switz.dao.EmpresaProductoDao;
import mx.com.switz.dto.EmpresaProducto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;



@Repository
public class EmpresaProductoDaoImpl extends JdbcDaoSupport implements EmpresaProductoDao{
	
	
private SimpleJdbcInsert simpleJdbcInsert;
    
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
    
    @Autowired
    public EmpresaProductoDaoImpl(DataSource dataSource){
    	
    	setDataSource(dataSource);
        this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(
                dataSource);
        simpleJdbcInsert = new SimpleJdbcInsert(getJdbcTemplate().getDataSource()).withTableName("EmpresaProducto");
    }
    
    private static final String SQL_UPDATE_EMPRESA_PRODUCTO = "UPDATE empresaProducto set claveEmpresa = :claveEmpresa,claveProducto = :claveProducto  WHERE claveEmpresa = :claveEmpresa AND claveProducto = :claveProducto";
	private static final String SQL_DELETE_EMPRESA_PRODUCTO = "DELETE FROM  empresaProducto WHERE claveEmpresa = :claveEmpresa AND claveProducto = :claveProducto";
    public void insertEmpresaProducto(EmpresaProducto empresaProducto) {
        SqlParameterSource parameters = new BeanPropertySqlParameterSource(empresaProducto);
        simpleJdbcInsert.execute(parameters);
    }

    public List selectEmpresaProducto(EmpresaProducto empresaProducto) {        
        
        
        String query = "SELECT * FROM  empresaProducto WHERE clave = :clave" ;
        SqlParameterSource parameterSource = new BeanPropertySqlParameterSource(empresaProducto);
        return  namedParameterJdbcTemplate.query(query, parameterSource,ParameterizedBeanPropertyRowMapper.newInstance(EmpresaProducto.class));

            
    }
    
        @Override
    public void updateEmpresaProducto(EmpresaProducto empresaProducto) {
        SqlParameterSource parameterSource = new BeanPropertySqlParameterSource(
               empresaProducto);
        this.namedParameterJdbcTemplate.update(SQL_UPDATE_EMPRESA_PRODUCTO,
                parameterSource);
    }

    @Override
    public void deleteEmpresaProducto(EmpresaProducto empresaProducto) //throws EjecucionException
    {
        SqlParameterSource parameterSource = new BeanPropertySqlParameterSource(empresaProducto);
        this.namedParameterJdbcTemplate.update(SQL_DELETE_EMPRESA_PRODUCTO, parameterSource);
    }


    


}
